package com.kinghood.productcenter.common.model.dto.product;

import com.kinghood.productcenter.common.model.dto.sku.ProductSkuReqDTO;
import lombok.Data;
import org.springframework.util.CollectionUtils;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * description
 *
 * @author zhangFanJun
 * @date 2023-12-25 13:35
 **/
@Data
public class ProductReqDTO implements Serializable {


    /**
     * 品牌id
     */
    private Long brandId;
    /**
     * 货类id
     */
    private Long goodsId;
    /**
     * 品类id
     */
    private Long categoryId;
    /**
     * 编码后缀
     */
    private Long codeSuffix;
    /**
     * 商品模板
     */
    private Long productTemplateId;
    /**
     * 工厂图
     */
    private String factoryPicture;
    /**
     * 手拍图
     */
    private String handPicture;
    /**
     * 高清图
     */
    private String hdPicture;
    /**
     * 运营图
     */
    private String operationPicture;
    /**
     * 3D图
     */
    private String picture3D;
    /**
     * 视屏
     */
    private String video;
    /**
     * 刻字
     */
    private String lettering;
    /**
     * 图案
     */
    private String pattern;

    /**
     * 商品的基础信息
     */
    @NotNull
    private ProductBaseReqDTO productBase;
    /**
     * sku
     */
    private List<ProductSkuReqDTO> skuList;
    /**
     * sku计价
     * 入参的时候封装回sku
     */
    private List<ProductSkuReqDTO> skuPriceList;
    /**
     * sku附件
     */
    private List<ProductSkuExtrasReqDTO> skuExtrasList;
    /**
     * sku
     */
    private List<ProductSupplierReqDTO> skuSupplierList;

    /**
     * 获取属性的code
     */
    public List<String> getAttributeCode() {

        ArrayList<String> res = new ArrayList<>();
        if(Objects.nonNull(productBase)){
            if (!CollectionUtils.isEmpty(productBase.getAttributes())) {
                res.addAll(productBase.getAttributes().keySet());
            }
        }
        if (!CollectionUtils.isEmpty(skuList)) {
            skuList.forEach(x -> {
                if (!CollectionUtils.isEmpty(x.getAttributes())) {
                    res.addAll(x.getAttributes().keySet());
                }
            });
        }
        if (!CollectionUtils.isEmpty(skuPriceList)) {
            skuPriceList.forEach(x -> {
                if (!CollectionUtils.isEmpty(x.getAttributes())) {
                    res.addAll(x.getAttributes().keySet());
                }
            });
        }
        if (!CollectionUtils.isEmpty(skuExtrasList)) {
            skuExtrasList.forEach(x -> {
                if (!CollectionUtils.isEmpty(x.getAttributes())) {
                    res.addAll(x.getAttributes().keySet());
                }
            });
        }
        if (!CollectionUtils.isEmpty(skuSupplierList)) {
            skuSupplierList.forEach(x -> {
                if (!CollectionUtils.isEmpty(x.getAttributes())) {
                    res.addAll(x.getAttributes().keySet());
                }
            });
        }
        return res;
    }
}
